Office Hours Topics
Databases & SQL
- Bulk inserting into a database
- Linking to reference tables
- Creating tables with constraints and performance in mind
- Null values in databases
- Good practices for cleaning data
- Aggregate queries
- CTEs and subqueries
- Complex JOINs and queries
- ACID vs BASE transactions
- Using external SQL files within Python scripts
psycopg2 & Database Integration
- psycopg2.execute_batch() vs psycopg2.execute_values()
Python Data Structures & Language Features
- Hashmaps and hashsets (how they work)
- Regex basics
- What is yield in Python and when to use it?
- Best “stylish” programming methods in Python (e.g. comprehensions, idiomatic features)
Testing & Mocking
- Writing pytest tests for functions that create or delete files
- Pytest parametrisation
- Is there a way to mock AWS services (moto, boto3 patching, mocking S3)?
- How testing works with boto3 (patching, mocking, moto)
Data Analysis & Tools
- Jupyter notebooks - best practices and use cases
- pandas vs numpy (when to use each)
- pandas vs SQL for filtering/cleaning data
- pandas.DataFrame.melt() vs pivot for reshaping data
- When to use filtering in SQL vs pandas
Visualisation
- matplotlib vs ggplot vs seaborn (comparison of visualisation libraries)
Logging & Documentation
- Logging - how and where to use it (including pipelines)
- Using logging in pipelines (structure, placement, examples)
- What makes a good README file?
- What makes a good system design diagram?
- New lines at the end of files - do they matter?
Infrastructure as Code (Terraform & Deployment)
- Terraform basics (states, rollbacks, config across multiple providers)
- Terraform use cases beyond AWS/Azure (self-hosted setups like Proxmox, TrueNAS)
- Terraform output variables
- Terraform and state management (avoiding state errors, managing resources)
- SSH deploy with GitHub Actions (rsync over SSH)
Machine Learning Basics
- PyTorch basics
- TensorFlow basics
- What is a Random Forest? (ML)